# -*- coding: utf-8 -*-

"""获取数据并返回数据库"""


import os
import io
import re
import sys
sys.path.append('../')
from utils.urlrequest import (
    url_match,
    get_db
)



def get_from_url(url:str, target=None, alias=None, chunksize=1024, timedelta=.08):
    """从URL中获取数据
    
    Arguments:
        url {str} -- 给定的web url
    
    Keyword Arguments:
        target {str} -- 存储路径名, 默认位于根目录的"data"文件夹下 (default: None)
        alias {str} -- 文件别名 (default: None)
        chunksize {int} -- 网络流量分别大小, 只在已知文件大小的网络流量中生效 (default: 1024)
        timedelta {float} -- 进度条刷新间隔, 同chunksize (timedelta: .08)
    
    Returns:
        BytesIO
    
    get_from_url 函数内部由 utils.urlrequest.get_db 以及 get_from_local函数实现, 详细使用可
    参考这两个函数的说明
    """

    directory = get_db(url, target=target, alias=alias, chunksize=chunksize, timedelta=timedelta)
    return directory


def get_from_local(filepath:str):
    assert os.path.exists(filepath), '"%s" is not exist.' % filepath
    file = io.BytesIO()
    with open(filepath, mode='rb') as fp:
        file.write(fp.read())
    return file
    
    